home *** CD-ROM | disk | FTP | other *** search
- #include <minimal.h>
- #include <osbind.h>
- #include <string.h>
-
- #define TRUE 1
- #define FALSE 0
-
- extern char *syserr(long);
-
- int rflag = 0, fflag = 0;
-
- int
- do_rm(const char *name) {
- char *e;
- long err;
- char attr;
-
- if ((err = attr = Fattrib(name,0,0)) < 0) goto error;
- else if (attr & 1) {
- if (fflag) {
- if ((err = Fattrib(name,1,(attr & ~1))) < 0) goto error;
- /* else fall through to next "if" */
- }
- else {
- e = "access denied";
- goto error1;
- }
- }
- if ((err = Fdelete(name)) < 0) {
- error: e = syserr(err);
- error1: (void)Fwrite(2,(long)strlen(name),name);
- (void)Fwrite(2,2L,": ");
- (void)Fwrite(2,(long)strlen(e),e);
- (void)Fwrite(2,2L,"\r\n");
- return 1;
- }
- return 0;
- }
-
- int
- main(int argc,char *argv[])
- {
- char *p;
- int e;
-
- --argc, ++argv;
- while (*argv && **argv == '-') {
- p = &argv[0][1];
- while (*p) {
- switch (*p) {
- case 'f': fflag = 1; break;
- case 'r': (void)Fwrite(2,23L,"rm -r not implemented\r\n");
- exit(1);
- default:
- (void)Fwrite(2,16L,"Unknown option: ");
- (void)Fwrite(2,1L,p);
- (void)Fwrite(2,2L,"\r\n");
- goto usage;
- }
- p++;
- }
- argc--, argv++;
- }
-
- if (!argc) {
- usage:
- (void)Fwrite(2,29L,"Usage: rm [-fr] files ...\r\n");
- Pterm(1);
- }
-
- e = 0;
- while (argc) {
- e |= do_rm(*argv);
- argv++, argc--;
- }
- return e;
- }
-
-